// index/pages/examFrontier/examFrontier.js
const { http } = require('../../../utils/http.js');

// 配置选项 - 可以在这里调整后端服务地址
const API_CONFIG = {
  // 后端服务地址 - 根据您的实际后端服务地址修改
  BASE_URL: 'http://localhost:8080', // 如果后端运行在8080端口，请修改这里
  // 如果后端运行在其他端口，请相应修改，例如：
  // BASE_URL: 'http://localhost:9000', // 9000端口
  // BASE_URL: 'http://192.168.1.100:8080', // 局域网IP
};

// 创建自定义的HTTP实例，使用页面配置的BASE_URL
const customHttp = new (require('../../../utils/http.js').HttpUtil)({
  BASE_URL: API_CONFIG.BASE_URL
});

Page({
  data: {
    questionList: [],
    loading: false,
    hasMore: true,
    pageNum: 1,
    pageSize: 10
  },
  
  onLoad() {
    this.loadExamIntroList();
  },
  
  onUnload() {
  },

  /**
   * 加载考试前沿列表
   */
  loadExamIntroList(isRefresh = false) {
    if (this.data.loading) return;
    
    if (isRefresh) {
      this.setData({
        pageNum: 1,
        hasMore: true,
        questionList: []
      });
    }
    
    if (!this.data.hasMore) return;
    
    this.setData({ loading: true });
    
    const params = {
      pageNum: this.data.pageNum,
      pageSize: this.data.pageSize
    };
    
    // 构建完整的接口URL
    const apiUrl = `${API_CONFIG.BASE_URL}/hyg/intro/list`;
    
    console.log('正在请求接口:', apiUrl, '参数:', params);
    
    // 使用自定义HTTP实例，确保使用正确的BASE_URL
    customHttp.get('/hyg/intro/list', params)
      .then(res => {
        console.log('考试前沿数据获取成功:', res);
        
        let newList = [];
        if (res.rows && Array.isArray(res.rows)) {
          newList = res.rows.map(item => ({
            id: item.id,
            content: this.cleanHtmlTags(item.content),  // 清理HTML标签
            date: this.formatDate(item.createTime),
            imageUrl: item.imageUrl || '/images/makesi.jpg',
            title: this.cleanHtmlTags(item.title),  // 清理HTML标签
            fullContent: item.content  // 保存完整内容用于详情页
          }));
        }
        
        if (isRefresh) {
          this.setData({
            questionList: newList,
            pageNum: 1
          });
        } else {
          this.setData({
            questionList: [...this.data.questionList, ...newList],
            pageNum: this.data.pageNum + 1
          });
        }
        
        // 判断是否还有更多数据
        if (newList.length < this.data.pageSize) {
          this.setData({ hasMore: false });
        }
      })
      .catch(err => {
        console.error('获取考试前沿数据失败:', err);
        
        // 根据错误类型显示不同的提示信息
        let errorMessage = '数据加载失败';
        if (err.code === 404) {
          errorMessage = '接口不存在，请检查后端服务';
        } else if (err.code === 500) {
          errorMessage = '服务器内部错误';
        } else if (err.code === 403) {
          errorMessage = '权限不足，请检查登录状态';
        } else if (err.message && err.message.includes('网络请求失败')) {
          errorMessage = '网络连接失败，请检查网络设置';
        }
        
        wx.showToast({
          title: errorMessage,
          icon: 'none',
          duration: 3000
        });
      })
      .finally(() => {
        this.setData({ loading: false });
        wx.stopPullDownRefresh();
      });
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.loadExamIntroList(true);
  },

  /**
   * 上拉加载更多
   */
  onReachBottom() {
    if (this.data.hasMore && !this.data.loading) {
      this.loadExamIntroList();
    }
  },

  /**
   * 跳转到问题详情
   */
  toQuestionDetail(e) {
    const id = e.currentTarget.dataset.id;
    const item = this.data.questionList.find(q => q.id === id);
    
    if (item) {
      // 将数据存储到本地，供详情页使用
      wx.setStorageSync('examIntroDetail', item);
      
      // 跳转到详情页
      wx.navigateTo({
        url: `/index/pages/examFrontierDetail/examFrontierDetail?id=${id}`
      });
    }
  },

  /**
   * 格式化日期
   */
  formatDate(dateStr) {
    if (!dateStr) return '';
    
    try {
      const date = new Date(dateStr);
      const year = date.getFullYear();
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      return `${year}.${month}.${day}`;
    } catch (e) {
      return dateStr;
    }
  },

  /**
   * 清理HTML标签
   */
  cleanHtmlTags(html) {
    if (!html) return '';
    // 使用正则表达式移除所有HTML标签
    return html.replace(/<[^>]*>/g, '');
  }
});